package com.thread.executor;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class SingleThreadExecutor {

	public static void main(String[] args) {
		// Executor在javaSE5及以后是启动任务的优选方法，替代Thread
		// SingleThreadExecutor就像是数量为1的FixedThreadPool，如果像它提交了多个任务，那么这些任务将排队，每个任务都会在下一个任务开始前运行结束，所有任务使用相同的线程
		ExecutorService exec = Executors.newSingleThreadExecutor();
		for (int i = 0; i < 5; i++) {
			exec.execute(new LiftOff());
		}
		System.out.println("================");
		for (int i = 5; i < 10; i++) {
			exec.execute(new LiftOff());
		}
		// 对shutdown()方法的调用可以防止新任务被提交给这个Executor，当前线程将继续运行在shutdown()被调用之前提交的所有任务
		exec.shutdown();
		System.out.println("结束");
	}

}
